package remato.domain.common;

import java.util.List;
import java.util.Set;

import remato.common.domain.helpers.ProjectParentable;

import com.wgo.bpot.domain.common.User;



/**
 * This concept represents the entire requirement system. 
 * This concept will have only a single row.
 *
 */
public interface RequirementSystem extends  ProjectParentable {
	public Set<Stakeholder> getStakeholders();
    /**
     * @return <tt>true</tt> if this set did not already contain the specified
     *         element.
     */
	public boolean addStakeholder(Stakeholder stakeholder);
	/**
     * @return <tt>true</tt> if this collection changed as a result of the
     *         call
	 */
	public boolean removeStakeholder(Stakeholder stakeholder);
	
	public Set<PropertySet> getPropertySets();
    /**
     * @return <tt>true</tt> if this set did not already contain the specified
     *         element.
     */
	public boolean addPropertySet(PropertySet propertySet);
	/**
     * @return <tt>true</tt> if this collection changed as a result of the
     *         call
	 */
	public boolean removePropertySet(PropertySet propertySet);

    public List<Status> getRequirementStatuses();
    public Set<User> getUsers();
	public boolean addRequirementStatus(Status status);
	public boolean removeRequirementStatus(Status status);
    public boolean addUser(User user);
    public boolean removeUser(User user);
}
